Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2022
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритмізація та програмування

Частина тексту файла

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Кафедра АПЕПС Алгоритмізація та програмування 2: . Процедурне програмування ЗВІТ До лабораторної роботи № 2 «Динамічне виділення пам’яті для одно- та двовимірних масивів» Варіант №24 Дата «11» Квітня 2022 ЗАВДАННЯ: 1. Ознайомитись з особливостями роботи з динамічними одно- та двовимірними масивами. 2. Розробити Блок-схему програмного алгоритму. 3.Виконати індивідуальне завдання. 4. Оформити ЗВІТ до лабораторної роботи згідно вимог та методичних рекомендацій. 5. Вихідні дані (завдання) обрати згідно свого варіанта у Додатку B-2. РЕЗУЛЬТАТ РОБОТИ: 1. Роздрукувати отримані результати (вивести на екран). 2. ЗВІТ до комп’ютерного практикуму для перевірки додати в Клас. 3. Програмний код розмістити на сайті Repl.it (посилання виключно через кнопку «+ Invite»). Теоретичні відомості Динамічний масив – це така структура даних, яка може створюватися тоді, коли кількість елементів наперед невідома, а також може змінювати свій розмір під час виконання програми. Формування масивів зі змінними розмірами можна організувати за допомогою вказівників та засобів динамічного розподілу пам’яті. В мові С передбачені широкі можливості керування пам’яттю під час виконання програми, які забезпечуються функціями, що розташовані в бібліотеці stdlib.h. Для виділення і звільнення динамічної пам’яті використовуються наступні функції: malloc() void * malloc (unsigned s) Повертає вказівник на початок області динамічної пам’яті довжиною в s байт, при невдалому завершенні повертає NULL. calloc() void * calloc (unsigned n, unsigned m) Повертає вказівник на початок області динамічної пам’яті для розміщення n елементів довжиною по m байт кожен, при невдалому завершенні повертає NULL. realloc() void * realloc (void * p, unsigned s) Змінює розмір блоку раніше виділеної динамічної пам’яті до розміру s байт, р – адреса початку змінюваного блоку, при невдалому завершенні повертає NULL. free() void * free (void p) Звільняє раніше виділену ділянку динамічної пам’яті, р – адреса першого байту. В усіх функціях виділення пам’яті необхідно передавати кількість байт, а зазвичай програмісту відома кількість елементів або структур, що будуть в ній розміщені. Для визначення дійсної кількості байт, що буде відведена під дану змінну або структуру в С введена функція sizeof(), яка повертає кількість байт в даному типі змінної або структури. Функція для формування одновимірного динамічного масиву: int * make_mas (int n) { int * mas; mas = (int *) malloc (n * sizeof (int)); for (int i = 0; i <n; i ++) mas [i] = random (10); return mas; } Для виділення пам’яті використовується функція malloc(), параметром якої є розмір ділянки, що виділяється пам’яті рівний n * sizeof (int). Так як функція malloc() повертає нетипізований вказівник void *, то необхідно виконати перетворення отриманого нетипізованого вказівника на вказівник типу int *. Звільнити виділену пам’ять можна функцією free (mas). Після виділення деякої ділянки пам’яті така ділянка резервується і не може бути повторно використана до тих пір, поки вона не буде звільнена за допомогою явної функції free(). Функція free(p) “знає” розмір ділянки, що пов’язана з вказівником, тому достатньо в ній вказати вказівник на відповідну ділянку. Після виконання функції free() всі вказівники на неї стають невизначеними і можуть бути використані для адресації інших ділянок. Якщо трапиться, що на дану ділянку не вказує жоден вказівник, вона стає недоступною, але не повертається до вільної частини купи і не може бути використаною. Саме така помилка частіше всього призводить до важко визначуваної помилки, що зветься “витік пам’яті” (memory leak). Добрим правилом вважається звільняти динамічно виділені ділянки пам’яті в тому ж блоці коду, де вона була виділена, наприклад в функції main() або в будь-якій функції. При виділенні динамічної пам’яті під масив розміри масиву повинні бути повністю визначені до операції виділе...
Антиботан аватар за замовчуванням

08.05.2023 11:05

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини